package com.xiao.handler.exception;

import com.xiao.domain.ResponseResult;
import com.xiao.exception.SystemException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;


/**
 *定义了一个全局的异常处理策略，
 * 当应用中出现SystemException时，它会捕获这个异常，
 * 记录详细的错误信息，并返回一个Json格式化的错误响应给前端。
 */
@RestControllerAdvice // 等同于 @ControllerAdvice + @ResponseBody
@Slf4j // Lombok 的日志控制台输出
public class GlobalExceptionHandler {

    @ExceptionHandler(SystemException.class)//捕获并处理特定的异常
    public ResponseResult systemExceptionHandler(SystemException e){
        // 1. 打印异常信息
        log.error("出现了异常！ ",e);
        // 2. 从异常对象中获取提示信息封装返回
        return ResponseResult.errorResult(e.getCode(),e.getMsg());
    }

}
